#include <stdio.h>

// 判断是否为闰年
int isLeapYear(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        return 1; // 是闰年
    } else {
        return 0; // 不是闰年
    }
}

int main() {
    int year, month, day;
    int dayCount = 0;
    int leap;

    // 输入日期
    printf("请输入年 月 日（用空格分隔）：");
    scanf("%d %d %d", &year, &month, &day);

    if (year < 1 || month < 1 || month > 12 || day < 1) {
        printf("输入的日期不合法！\n");
        return 1;
    }

    switch (month) {
        case 4: case 6: case 9: case 11:
            if (day > 30) {
                printf("输入的日期不合法！\n");
                return 1;
            }
            break;
        case 2:
            leap = isLeapYear(year);
            if ((leap && day > 29) || (!leap && day > 28)) {
                printf("输入的日期不合法！\n");
                return 1;
            }
            break;
        default: // 1、3、5、7、8、10、12月
            if (day > 31) {
                printf("输入的日期不合法！\n");
                return 1;
            }
    }

    leap = isLeapYear(year);
    switch (month) {
        case 12: dayCount += 30;  // 加11月的天数
        case 11: dayCount += 30;  // 加10月的天数
        case 10: dayCount += 31;  // 加9月的天数
        case 9:  dayCount += 31;  // 加8月的天数
        case 8:  dayCount += 30;  // 加7月的天数
        case 7:  dayCount += 31;  // 加6月的天数
        case 6:  dayCount += 30;  // 加5月的天数
        case 5:  dayCount += 31;  // 加4月的天数
        case 4:  dayCount += 28 + leap;  // 加2月的天数（闰年+1）
        case 3:  dayCount += 31;  // 加1月的天数
        case 2:  break; 
        case 1:  break;
    }

    // 加上当月的天数
    dayCount += day;

    printf("%d年%d月%d日是该年的第%d天\n", year, month, day, dayCount);

    return 0;
}